/**
 * 公司状态管理模块
 * 使用Pinia管理公司相关的数据状态，包括选中公司和公司列表
 */
import { defineStore } from 'pinia'

// 定义公司数据类型
interface Company {
  id: string | number
  name: string
  [key: string]: any
}

// 公司状态管理模块
export const useCompanyStore = defineStore('company', {
  state: () => ({
    // 当前选择的公司
    selectedCompany: null as Company | null,
    // 公司列表
    companyList: [] as Company[]
  }),

  actions: {
    /**
     * 设置选中的公司
     * @param company 公司信息
     */
    setSelectedCompany(company: Company) {
      this.selectedCompany = company
      // 保存到本地存储
      localStorage.setItem('selectedCompany', JSON.stringify(company))
    },

    /**
     * 获取选中的公司
     */
    getSelectedCompany(): Company | null {
      // 如果状态中没有，尝试从本地存储获取
      if (!this.selectedCompany) {
        const stored = localStorage.getItem('selectedCompany')
        if (stored) {
          this.selectedCompany = JSON.parse(stored)
        }
      }
      return this.selectedCompany
    },

    /**
     * 清除选中的公司
     */
    clearSelectedCompany() {
      this.selectedCompany = null
      localStorage.removeItem('selectedCompany')
    },

    /**
     * 设置公司列表
     * @param companies 公司列表数据
     */
    setCompanyList(companies: Company[]) {
      this.companyList = companies
    },

    /**
     * 清理所有公司相关数据
     * 用于退出登录时调用
     */
    clearAllCompanyData() {
      this.selectedCompany = null
      this.companyList = []
      localStorage.removeItem('selectedCompany')
    }
  }
})